﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using dto;
using bus;
namespace HOANGVIET
{
    public partial class QuanLyLopHoc : Form
    {
        public QuanLyLopHoc(KetNoiDto ketnoi)
        {
            InitializeComponent();
            lophocBUS = new LOPHOCBus(ketnoi);
            lophocDTO = new LOPHOCdto();
            caphocBUS = new CAPHOCBus(ketnoi);
            caphocDTO = new CAPHOCdto();
            dangkyhocBUS = new DANGKYHOCBus(ketnoi);
            dangkyhocdto = new DANGKYHOCdto();
            ctgiangdayBUS = new CTGIANGDAYBus(ketnoi);
            ctgiangdayDTO = new CTGIANGDAYdto();
            phongtamBUS = new PHONGTAMBus(ketnoi);
            phongtamDTO = new PHONGTAMdto();
            caphocDT = new DataTable();
            lophocDT = new DataTable();
            kn = ketnoi;
        }
        #region bien
        KetNoiDto kn;
        int trangthailop = 0;
        LOPHOCBus lophocBUS;
        LOPHOCdto lophocDTO;

        CAPHOCBus caphocBUS;
        CAPHOCdto caphocDTO;

        DANGKYHOCBus dangkyhocBUS;
        DANGKYHOCdto dangkyhocdto;

        CTGIANGDAYBus ctgiangdayBUS;
        CTGIANGDAYdto ctgiangdayDTO;

        PHONGTAMBus phongtamBUS;
        PHONGTAMdto phongtamDTO;

        DataTable caphocDT, lophocDT;
        DevComponents.AdvTree.Node node;

        int idlop, idcap, siso;
        #endregion
        #region ham
        public void lenlop(int lopcu, int lopmoi, int sisolop)
        {
            DataTable dt = new DataTable();
            if (sisolop < dt.Rows.Count)
            {
                MessageBox.Show("LỚP KHÔNG ĐỦ SỈ SỐ ĐỂ CHUYỂN LỚP CŨ LÊN  LỚP MỚI !!! \n ĐỀ NGHỊ ĐỔI LỚP KHÁC HOẶC TĂNG SỈ SỐ LỚP LÊN ", "THÔNG BÁO");
                return;
            }
            dt = dangkyhocBUS.LayBangTableTheoIDLOPHOC(lopcu);
            for (int i = 0; i <= sisolop; i++)
            {
                dangkyhocdto = new DANGKYHOCdto();
                dangkyhocdto.NGAYDANGKY = DateTime.Now;
                dangkyhocdto.IDLOPHOC = lopmoi;
                dangkyhocdto.TRANGTHAI = 1;
                dangkyhocdto.GHICHU = "ĐƯỢC XẾP  LỚP";
                dangkyhocdto.IDHOCSINH = int.Parse(dt.Rows[i]["IDHOCSINH"].ToString());
                dangkyhocBUS.suaTRANGTHAI(4,int.Parse(dt.Rows[i]["IDDANGKYHOC"].ToString()));
                dangkyhocBUS.Them(dangkyhocdto);
                if (i >= dt.Rows.Count - 1)
                {
                    break;
                }
            }
        }
        public void loadThongTinLop()
        {
            try
            {
                dgvDSHocSinh.DataSource = dangkyhocBUS.layDanHSachHocSInh(idlop);
                dgvDSGiaoVIen.DataSource = dangkyhocBUS.layDanHSachGiaoVien(idlop);
                dgvDSMonHoc.DataSource = dangkyhocBUS.layDanHSachMonHoc(idcap);
                dgvDSPhong.DataSource = dangkyhocBUS.layDanhSachPhong(idlop);

            }
            catch (Exception)
            {
            }

        }
        public void LoadForm()
        {

            advTree1.Nodes.Clear();
            lophocDT = lophocBUS.LayBangTableTheoTRANGTHAI(trangthailop);
            caphocDT = caphocBUS.layBangNhieuTable();
            loadcha(caphocDT, lophocDT, node);

        }
        public void loadcha(DataTable caphoc, DataTable lophoc, DevComponents.AdvTree.Node nodeCha)
        {

            for (int i = 0; i < caphoc.Rows.Count; i++)
            {
                DevComponents.AdvTree.Node node = new DevComponents.AdvTree.Node();
                int childNode = Convert.ToInt32(caphoc.Rows[i].ItemArray[0].ToString());

                if (Convert.ToInt32(caphoc.Rows[i].ItemArray[3].ToString()) == 1)
                    node.ImageIndex = 1;
                else
                    node.ImageIndex = 0;
                node.Text = caphoc.Rows[i].ItemArray[1].ToString();
                node.Name = caphoc.Rows[i].ItemArray[0].ToString();
                advTree1.Nodes.Add(node);
                for (int j = 0; j < lophoc.Rows.Count; j++)
                {
                    if (Convert.ToInt32(lophoc.Rows[j].ItemArray[2].ToString()) == Convert.ToInt32(caphoc.Rows[i].ItemArray[0].ToString()))
                    {
                        DevComponents.AdvTree.Node nodecon = new DevComponents.AdvTree.Node();
                        int childNodecon = Convert.ToInt32(lophoc.Rows[j].ItemArray[0].ToString());

                        if (Convert.ToInt32(lophoc.Rows[j].ItemArray[9].ToString()) == 1)
                            node.ImageIndex = 3;
                        else
                            nodecon.ImageIndex = 2;
                        nodecon.Tag = lophoc.Rows[j].ItemArray[7].ToString();
                        nodecon.Text = lophoc.Rows[j].ItemArray[1].ToString();
                        nodecon.Name = lophoc.Rows[j].ItemArray[0].ToString();

                        node.Nodes.Add(nodecon);
                        DevComponents.AdvTree.Cell GHICHU = new DevComponents.AdvTree.Cell();
                        GHICHU.Text = "(SỈ SỐ LỚP : " + lophoc.Rows[i]["SISO"].ToString() + ")";
                        nodecon.Cells.Add(GHICHU);
                    }
                }
            }
        }
        #endregion
        #region su kien

        private void QuanLyLopHoc_Load(object sender, EventArgs e)
        {
            try
            {
                LoadForm();
            }
            catch (Exception)
            {
            }
        }

        private void advTree1_AfterNodeSelect(object sender, DevComponents.AdvTree.AdvTreeNodeEventArgs e)
        {
            try
            {
                // 
                //idcap , idlop
                if (advTree1.SelectedNode.Parent != null)
                {
                    tabControl1.Enabled = true;
                    idlop = int.Parse(advTree1.SelectedNode.Name.ToString());
                    idcap = int.Parse(advTree1.SelectedNode.Parent.Name.ToString());
                    siso = int.Parse(advTree1.SelectedNode.Tag.ToString());
                    if (idcap == 1)
                    {
                        toolStripButton13.Visible = true;

                    }
                    else
                    {
                        toolStripButton13.Visible = false;
                    }
                    loadThongTinLop();
                }
                else
                {
                    tabControl1.Enabled = false;
                }

            }
            catch (Exception)
            {
            }
        }

        private void dgvDSPhong_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void toolStripButton13_Click(object sender, EventArgs e)
        {
            try
            {
                DataTable dt = new DataTable();
                dt = dangkyhocBUS.LayDanhSachHocSInhChuaTUngCoLop();
                DateTime ngaydangky = new DateTime();
                ChonNgayDKChoHocSinhMoi chongay = new ChonNgayDKChoHocSinhMoi();
                chongay.ShowDialog();
                if (chongay.ngay == new DateTime(1900, 1, 1))
                {
                    return;
                }
                else
                {
                    for (int i = 0; i <= siso; i++)
                    {
                        dangkyhocdto = new DANGKYHOCdto();
                        dangkyhocdto.NGAYDANGKY = chongay.ngay;
                        dangkyhocdto.IDLOPHOC = idlop;
                        dangkyhocdto.TRANGTHAI = 1;
                        dangkyhocdto.GHICHU = "ĐƯỢC XẾP  LỚP";
                        dangkyhocdto.IDHOCSINH = int.Parse(dt.Rows[i]["IDHOCSINH"].ToString());
                        dangkyhocBUS.Them(dangkyhocdto);
                        if (i >= dt.Rows.Count - 1)
                        {
                            MessageBox.Show("KHÔNG ĐỦ HỌC SINH", "THÔNG BÁO");
                            break;
                        }
                    }
                }
            }
            catch (Exception)
            {
            }
        }

        private void toolStripButton14_Click(object sender, EventArgs e)
        {
            try
            {
                DialogResult result1 = MessageBox.Show("BẠN CÓ CHO HỌC SINH TẠI LỚP " + advTree1.SelectedNode.Text.ToString().ToUpper() + " LÊN LỚP KHÔNG ?", "THÔNG BÁO", MessageBoxButtons.YesNo);
                if (result1 == DialogResult.Yes)
                {

                    DSLopcs lenlop1 = new DSLopcs(kn, int.Parse(advTree1.SelectedNode.Parent.Name.ToString()) + 1);
                    lenlop1.ShowDialog();
                    if (lenlop1.lophocDTO.IDLOPHOC == 0)
                    {
                        return;
                    }
                    else
                    {
                        lenlop(int.Parse(advTree1.SelectedNode.Name.ToString()), lenlop1.lophocDTO.IDLOPHOC, lenlop1.lophocDTO.SISO);
                        loadThongTinLop();
                    }
                }
            }
            catch (Exception)
            {

                
            }
        }

        private void toolStripButton3_Click(object sender, EventArgs e)
        {
            try
            {
                DialogResult result1 = MessageBox.Show("BẠN CÓ MUỐN LOẠI  HỌC SINH NÀY RA KHỎI LỚP KHÔNG ?", "THÔNG BÁO", MessageBoxButtons.YesNo);
                if (result1 == DialogResult.Yes)
                {
                    dangkyhocBUS.Xoa(dangkyhocdto.IDDANGKYHOC);
                    loadThongTinLop();
                }
            }
            catch (Exception)
            {
            }
        }

        private void dgvDSHocSinh_SelectionChanged(object sender, EventArgs e)
        {
            try
            {
                dangkyhocdto = dangkyhocBUS.LayBangDTo(dgvDSHocSinh.CurrentRow.Index, dgvDSHocSinh);
            }
            catch (Exception)
            {
            }
        }

        private void dgvDSHocSinh_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            toolStripLabel3.Text = dgvDSHocSinh.Rows.Count.ToString();
        }

        private void toolStripButton9_Click(object sender, EventArgs e)
        {
            try
            {

                    DSLopcs lenlop1 = new DSLopcs(kn, int.Parse(advTree1.SelectedNode.Parent.Name.ToString()) );
                    lenlop1.ShowDialog();
                    if (lenlop1.lophocDTO.IDLOPHOC == 0)
                    {
                        return;
                    }
                    else
                    {
                        dangkyhocBUS.suaIDLOPHOC(lenlop1.lophocDTO.IDLOPHOC, dangkyhocdto.IDDANGKYHOC);
                        loadThongTinLop();
                    }
            }
            catch (Exception)
            {
            }
        }

        private void dgvDSHocSinh_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void toolStripButton8_Click(object sender, EventArgs e)
        {
            try
            {
                if (dgvDSHocSinh.Rows.Count >= int.Parse(advTree1.SelectedNode.Tag.ToString()))
                {
                    DialogResult result1 = MessageBox.Show("SỈ SỐ HIỆN TẠI LÀ: " + dgvDSHocSinh.Rows.Count.ToString()+ "\nSAU KHI THÊM SẼ VƯỢT QUÁ SỈ SỐ LỚP \n---- CÓ MUỐN THÊM HỌC SINH VÀO LỚP NÀY KHÔNG?", "THÔNG BÁO", MessageBoxButtons.YesNo);
                      if (result1 == DialogResult.Yes)
                      {
                      }
                }

            }
            catch (Exception)
            {
            }
        }

        private void đÃVÀOHỌCToolStripMenuItem_CheckedChanged(object sender, EventArgs e)
        {
            if (đÃVÀOHỌCToolStripMenuItem.Checked == true)
            {
                cHƯAVÀOHỌCToolStripMenuItem.Checked = !đÃVÀOHỌCToolStripMenuItem.Checked;
                đÃKẾTTHÚCToolStripMenuItem.Checked = !đÃVÀOHỌCToolStripMenuItem.Checked;
            }
        }

        private void cHƯAVÀOHỌCToolStripMenuItem_CheckedChanged(object sender, EventArgs e)
        {
            if (cHƯAVÀOHỌCToolStripMenuItem.Checked == true)
            {
                đÃVÀOHỌCToolStripMenuItem.Checked = !cHƯAVÀOHỌCToolStripMenuItem.Checked;
                đÃKẾTTHÚCToolStripMenuItem.Checked = !cHƯAVÀOHỌCToolStripMenuItem.Checked;
            }
        }

        private void đÃKẾTTHÚCToolStripMenuItem_CheckedChanged(object sender, EventArgs e)
        {
            if (đÃKẾTTHÚCToolStripMenuItem.Checked == true)
            {
                cHƯAVÀOHỌCToolStripMenuItem.Checked = !đÃKẾTTHÚCToolStripMenuItem.Checked;
                đÃVÀOHỌCToolStripMenuItem.Checked = !đÃKẾTTHÚCToolStripMenuItem.Checked;
            }
        }
        #endregion

        private void đÃVÀOHỌCToolStripMenuItem_Click(object sender, EventArgs e)
        {
            trangthailop = 0;
            LoadForm();
        }

        private void cHƯAVÀOHỌCToolStripMenuItem_Click(object sender, EventArgs e)
        {
            trangthailop = -1;
            LoadForm();
        }

        private void đÃKẾTTHÚCToolStripMenuItem_Click(object sender, EventArgs e)
        {
            trangthailop = 1;
            LoadForm();
        }
    }
}
